#include<bits/stdc++.h>
#include "stack.h"

template <typename T>               //声明类模板
int Stack<T>::size=100;
template <typename T>
Stack<T>::Stack()
{
    top=base=new T[size];            //分配一个size大小的内存     
}
template <typename T>
Stack<T>::~Stack()
{
    delete []base;            //释放一个size大小的内存     
}
template <typename T>
void Stack<T>::clear()            //清空栈 
{
    top=base; 
}
template <typename T>
bool Stack<T>::IsEmpty()        //判空 
{
    if(base==top)
    return true;
    else
    return false;
}
template <typename T>
int Stack<T>::length()      //栈长度
{
    return top-base;
}
template <typename T>
bool Stack<T>::push(T a)        //压栈
{
    *top=a;
    top++;
    if(length()==size)
    {
    	std::cout<<"对不起，栈满了"<<"\n"; 
    	    return false;
	}
    else
    	return true;
}
template <typename T>
bool Stack<T>::pop()        //出栈
{
    if(IsEmpty())
    {   
    std::cout<<"对不起，栈空了"<<"\n";
	 return  false;
	}

    else
    {
    top--;
    return true;
     }
}
template <typename T>
T Stack<T>::gettop()        //取栈顶
{
    return *(top-1);
}
template <typename T>
void Stack<T>::travel()     //栈遍历
{
    char *p;
    for(p=top-1;p>=base;p--)
    std::cout<<*p;
}


